#ifndef NAMESPACE_H
#define NAMESPACE_H

#include <QHash>
#include <QString>
#include "node.h"

class Namespace : public Node
{
public:
    Namespace(const YYLTYPE& loc);

    virtual Node* getEntry( const QString& name ) = 0;
    Node* resolve( const QString& name );

    const QHash<QString,Node*> getLiftedNames() const { return m_liftedNames; }
    Node* getLiftedEntry( const QString& name ) const;

protected:
    void liftNames();

private:
    void liftNames(Node* p);

    QHash<QString,Node*> m_liftedNames;
};

#endif // NAMESPACE_H
